package com.example.daytest.porxy.dynamic.cglib;

import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author heyu
 * @title: DebugMethodInterceptor
 * @description:自定义MethodInterceptor
 * @date 2021/5/18下午10:02
 */
public class DebugMethodInterceptor implements MethodInterceptor {

  /**
   * @param o 被代理的对象（需要增强的对象）
   * @param method 被拦截的方法（需要增强的方法）
   * @param objects 方法入参
   * @param methodProxy 用于调用原始方法
   */
  @Override
  public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy)
      throws Throwable {
    // 调用方法之前，我们可以添加自己的操作
    System.out.println("cglib动态之前" + method.getName());
    Object object = methodProxy.invokeSuper(o, objects);
    // 调用方法之后，我们同样可以添加自己的操作
    System.out.println("cglib动态zzhi " + method.getName());
    return object;
  }
}
